package exception;


import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import vo.common.vo.common.Result;

/**
 * ***** 统一异常处理类
 * 需要两个核心注解 @ControllerAdvice 、 @ExceptionHandler
 * @ControllerAdvice : Controller增强器，对Controller进行统一操作和处理
 * @ExceptionHandler : 捕获Controller抛出的指定类型的异常
 *
 * 相当于对所有的异常进行拦截，然后统一封装为Result类型的结果进行返回
 * 就是不会给前端返回异常
 *
 * 需要 @ResponseBody 返回json结构
 */
@ControllerAdvice
@ResponseBody
public class GlobalExceptionHandler {

    @ExceptionHandler(Exception.class)
    public Result error(Exception e){
        e.printStackTrace();
        return Result.build(null , 201,"出现了异常") ;
    }

    @ExceptionHandler(value = GuiguException.class)     // 处理自定义异常
    public Result error(GuiguException exception) {
        exception.printStackTrace();
        return Result.build(null , exception.getResultCodeEnum()) ;
    }
}